`timescale  1ns/1ps

module tb_main();

glbl glbl();

parameter   UART_BPS    =   'd40_000_000;
parameter   CLK_FREQ    =   'd200_000_000;


wire sys_clk;
wire uart_clk;
wire clk_20m;
wire clk_5m;

reg  input_clk;
reg  sys_rst_n;
reg  miso;

initial fork begin      //25M
  #3;
  input_clk = 1;
  forever begin
    #20;
    input_clk = ~input_clk;
  end
end
join

//		Clock name	| Frequency 	| Phase shift
//		C0        	| 100.000000MHZ	| 0  DEG     
//		C1        	| 200.000000MHZ	| 0  DEG     
//		C2        	| 5.000000  MHZ	| 0  DEG     
//		C3        	| 20.000000 MHZ	| 0  DEG 
PLL u_pll(
    .refclk   (input_clk ),
    .reset    (~sys_rst_n),
    .extlock  (extlock 	 ),
    .clk0_out (O_clk0    ),
    .clk1_out (O_clk1    ),
    .clk2_out (O_clk2    ),
    .clk3_out (O_clk3    )
); 
assign sys_clk     = O_clk0; 
assign uart_clk    = O_clk1; 
assign clk_5m      = O_clk2;
assign clk_20m     = O_clk3;

initial begin
  sys_rst_n  <= 1'b0;  
  miso <= 1'b0;

  #10
  sys_rst_n <= 1'b1;

  #31300
  miso <= 1'b1;
  #50
  miso <= 1'b0;

  #5000
  miso <= 1'b1;
  #50
  miso <= 1'b0;
  #200
  miso <= 1'b1;
  #50
  miso <= 1'b0;

  #5000
  miso <= 1'b1;
  #50
  miso <= 1'b0;
  // $stop;
end   

spi_send_n 
#(
    .INIT_DELAY(20),
    // .SPI_DELAY (13),
    // .DELAY_NUM (5),
    .DELAY1(100),
    .DELAY2(30)
)
spi_send_n_inst
(
    .sys_clk    (sys_clk    ),
    .low_clk    (clk_20m    ),
    .sys_rst_n  (extlock    ),
    
    .miso       (miso       )
);
   

// reg  [7:0]  wr_data;
// reg  [6:0]  wr_addr;
// reg         wr_en;


// reg [7:0] cnt;

// always @(posedge sys_clk or negedge extlock) begin
//   if (!extlock) begin
//     cnt <= 'd0;
//   end
//   else if(cnt < 100) begin
//     cnt <= cnt + 1;
//   end
// end

// always @(posedge sys_clk or negedge extlock) begin
//   if (!extlock) begin
//     wr_en <= 1'b0;
//   end
//   else if(cnt == 10) begin
//     wr_en <= 1'b1;
//   end
//   else begin
//     wr_en <= 1'b0;
//   end
// end

// always @(posedge sys_clk or negedge extlock) begin
//   if (!extlock) begin
//     wr_data <= 'd0;
//   end
//   else if(cnt == 9) begin
//     wr_data <= 'd99;
//   end
// end

// always @(posedge sys_clk or negedge extlock) begin
//   if (!extlock) begin
//     wr_addr <= 'd0;
//   end
//   else if(cnt == 9) begin
//     wr_addr <= 'd19;
//   end
// end


endmodule
